package com.baikeyang.common.util;

import cn.hutool.http.HttpUtil;
import com.alibaba.fastjson.JSON;
import com.baikeyang.common.bean.map.baidu.BaiduMapLatLng;
import com.baikeyang.common.bean.map.baidu.BaiduMapLatLngResult;
import org.springframework.util.CollectionUtils;

/**
 * @Author     : BaiKeyang
 * @Date       : Created in 2020/2/24 16:44
 * @Description: 百度地图工具类
 * @Modified By: 
 * @Version: $
 */
public class BaiduMapUtil {

    static final String BAIDU_MAP_AKAY = "GpkoT53F4ZCKwpAwBaHGGhR3UVblhcgO";

    /**
     * 将腾讯地图经纬度转换为百度地图经纬度
     * @param lat 纬度
     * @param lng 经度
     * @param form 原坐标类型
     *             1：GPS设备获取的角度坐标，WGS84坐标;
     *             2：GPS获取的米制坐标、sogou地图所用坐标;
     *             3：google地图、soso地图、aliyun地图、mapabc地图和amap地图所用坐标，国测局（GCJ02）坐标;
     *             4：3中列表地图坐标对应的米制坐标
     *             5：百度地图采用的经纬度坐标;
     *             6：百度地图采用的米制坐标;
     *             7：mapbar地图坐标;
     *             8：51地图坐标
     */
    public static BaiduMapLatLng convertBaiduLatLng(String lat, String lng, Integer form) {
        String url = "http://api.map.baidu.com/geoconv/v1/?coords="+lng+","+lat+"&from="+form+"&to=5&ak="+ BAIDU_MAP_AKAY;//GET请求
        String res = HttpUtil.get(url);
        if(StringUtils.isNotEmpty(res)){
            BaiduMapLatLngResult result = JSON.parseObject(res, BaiduMapLatLngResult.class);
            if(result.getStatus() == 0){
                return CollectionUtils.isEmpty(result.getResult()) ? null : result.getResult().get(0);
            }
        }
        return null;
    }

    public static void main(String[] args) {
        BaiduMapLatLng result = convertBaiduLatLng("34.223812", "108.824821", 3);
        System.out.println(result);
    }

}
